🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / core / data / src / commonMain / kotlin / org / meshtastic / core / data / manager / MeshActionHandlerImpl.kt
Displaying Raw • Download
core/data/src/commonMain/kotlin/org/meshtastic/core/data/manager/MeshActionHandlerImpl.kt e85300531e124df08788c1b765d50af1bf6d516d (e8530053) Text, 17.84 KB
T8b949e/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.data.manager
Tff7b72import T7ee787co.touchlab.kermit.Logger
Tff7b72import T7ee787kotlinx.coroutines.CoroutineScope
Tff7b72import T7ee787okio.ByteString
Tff7b72import T7ee787okio.ByteString.Companion.toByteString
Tff7b72import T7ee787org.koin.core.annotation.Named
Tff7b72import T7ee787org.koin.core.annotation.Single
Tff7b72import T7ee787org.meshtastic.core.common.database.DatabaseManager
Tff7b72import T7ee787org.meshtastic.core.common.util.handledLaunch
Tff7b72import T7ee787org.meshtastic.core.common.util.ignoreExceptionSuspend
Tff7b72import T7ee787org.meshtastic.core.common.util.nowMillis
Tff7b72import T7ee787org.meshtastic.core.model.DataPacket
Tff7b72import T7ee787org.meshtastic.core.model.MeshUser
Tff7b72import T7ee787org.meshtastic.core.model.MessageStatus
Tff7b72import T7ee787org.meshtastic.core.model.Position
Tff7b72import T7ee787org.meshtastic.core.model.Reaction
Tff7b72import T7ee787org.meshtastic.core.model.service.ServiceAction
Tff7b72import T7ee787org.meshtastic.core.repository.CommandSender
Tff7b72import T7ee787org.meshtastic.core.repository.DataPair
Tff7b72import T7ee787org.meshtastic.core.repository.MeshActionHandler
Tff7b72import T7ee787org.meshtastic.core.repository.MeshDataHandler
Tff7b72import T7ee787org.meshtastic.core.repository.MeshMessageProcessor
Tff7b72import T7ee787org.meshtastic.core.repository.MeshPrefs
Tff7b72import T7ee787org.meshtastic.core.repository.NodeManager
Tff7b72import T7ee787org.meshtastic.core.repository.NotificationManager
Tff7b72import T7ee787org.meshtastic.core.repository.PacketRepository
Tff7b72import T7ee787org.meshtastic.core.repository.PlatformAnalytics
Tff7b72import T7ee787org.meshtastic.core.repository.RadioConfigRepository
Tff7b72import T7ee787org.meshtastic.core.repository.ServiceBroadcasts
Tff7b72import T7ee787org.meshtastic.proto.AdminMessage
Tff7b72import T7ee787org.meshtastic.proto.Channel
Tff7b72import T7ee787org.meshtastic.proto.Config
Tff7b72import T7ee787org.meshtastic.proto.ModuleConfig
Tff7b72import T7ee787org.meshtastic.proto.OTAMode
Tff7b72import T7ee787org.meshtastic.proto.PortNum
Tff7b72import T7ee787org.meshtastic.proto.User
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffLongParameterListTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTooManyFunctionsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCyclomaticComplexMethodTa5d6ff"Tb4b4b4)
Tf0883e@Single
Tff7b72class T56d364MeshActionHandlerImplTb4b4b4(
Tff7b72private Tff7b72val Te6edf3nodeManagerTb4b4b4: Te6edf3NodeManagerTb4b4b4,
Tff7b72private Tff7b72val Te6edf3commandSenderTb4b4b4: Te6edf3CommandSenderTb4b4b4,
Tff7b72private Tff7b72val Te6edf3packetRepositoryTb4b4b4: Te6edf3LazyTff7b72<Te6edf3PacketRepositoryTff7b72>Tb4b4b4,
Tff7b72private Tff7b72val Te6edf3serviceBroadcastsTb4b4b4: Te6edf3ServiceBroadcastsTb4b4b4,
Tff7b72private Tff7b72val Te6edf3dataHandlerTb4b4b4: Te6edf3LazyTff7b72<Te6edf3MeshDataHandlerTff7b72>Tb4b4b4,
Tff7b72private Tff7b72val Te6edf3analyticsTb4b4b4: Te6edf3PlatformAnalyticsTb4b4b4,
Tff7b72private Tff7b72val Te6edf3meshPrefsTb4b4b4: Te6edf3MeshPrefsTb4b4b4,
Tff7b72private Tff7b72val Te6edf3databaseManagerTb4b4b4: Te6edf3DatabaseManagerTb4b4b4,
Tff7b72private Tff7b72val Te6edf3notificationManagerTb4b4b4: Te6edf3NotificationManagerTb4b4b4,
Tff7b72private Tff7b72val Te6edf3messageProcessorTb4b4b4: Te6edf3LazyTff7b72<Te6edf3MeshMessageProcessorTff7b72>Tb4b4b4,
Tff7b72private Tff7b72val Te6edf3radioConfigRepositoryTb4b4b4: Te6edf3RadioConfigRepositoryTb4b4b4,
Tf0883e@NamedTb4b4b4(Ta5d6ff"Ta5d6ffServiceScopeTa5d6ff"Tb4b4b4) Tff7b72private Tff7b72val Te6edf3scopeTb4b4b4: Te6edf3CoroutineScopeTb4b4b4,
Tb4b4b4) Tb4b4b4: Te6edf3MeshActionHandler Tb4b4b4{
Tff7b72companion Tff7b72object Tb4b4b4{
Tff7b72private Tff7b72const Tff7b72val Te6edf3DEFAULT_REBOOT_DELAY Tff7b72= T79c0ff5
Tff7b72private Tff7b72const Tff7b72val Te6edf3EMOJI_INDICATOR Tff7b72= T79c0ff1
Tb4b4b4}
Tff7b72override Tff7b72suspend Tff7b72fun Td2a8ffonServiceActionTb4b4b4(Te6edf3actionTb4b4b4: Te6edf3ServiceActionTb4b4b4) Tb4b4b4{
Te6edf3LoggerTb4b4b4.Te6edf3d Tb4b4b4{ Ta5d6ff"Ta5d6ffServiceAction dispatched: Tffd700${Te6edf3actionTff7b72::Te6edf3classTb4b4b4.Te6edf3simpleNameTffd700}Ta5d6ff" Tb4b4b4}
Te6edf3ignoreExceptionSuspend Tb4b4b4{
Tff7b72val Te6edf3myNodeNum Tff7b72= Te6edf3nodeManagerTb4b4b4.Te6edf3myNodeNumTb4b4b4.Te6edf3value
Tff7b72if Tb4b4b4(Te6edf3myNodeNum Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3LoggerTb4b4b4.Te6edf3w Tb4b4b4{ Ta5d6ff"Ta5d6ffMeshActionHandlerImpl: myNodeNum is null, skipping ServiceAction!Ta5d6ff" Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3action Tff7b72is Te6edf3ServiceActionTb4b4b4.Te6edf3SendContactTb4b4b4) Tb4b4b4{
Te6edf3actionTb4b4b4.Te6edf3resultTb4b4b4.Te6edf3completeTb4b4b4(Tff7b72falseTb4b4b4)
Tb4b4b4}
Tff7b72returnTf0883e@ignoreExceptionSuspend
Tb4b4b4}
Tff7b72when Tb4b4b4(Te6edf3actionTb4b4b4) Tb4b4b4{
Tff7b72is Te6edf3ServiceActionTb4b4b4.Te6edf3Favorite Tff7b72-Tff7b72> Te6edf3handleFavoriteTb4b4b4(Te6edf3actionTb4b4b4, Te6edf3myNodeNumTb4b4b4)
Tff7b72is Te6edf3ServiceActionTb4b4b4.Te6edf3Ignore Tff7b72-Tff7b72> Te6edf3handleIgnoreTb4b4b4(Te6edf3actionTb4b4b4, Te6edf3myNodeNumTb4b4b4)
Tff7b72is Te6edf3ServiceActionTb4b4b4.Te6edf3Mute Tff7b72-Tff7b72> Te6edf3handleMuteTb4b4b4(Te6edf3actionTb4b4b4, Te6edf3myNodeNumTb4b4b4)
Tff7b72is Te6edf3ServiceActionTb4b4b4.Te6edf3Reaction Tff7b72-Tff7b72> Te6edf3handleReactionTb4b4b4(Te6edf3actionTb4b4b4, Te6edf3myNodeNumTb4b4b4)
Tff7b72is Te6edf3ServiceActionTb4b4b4.Te6edf3ImportContact Tff7b72-Tff7b72> Te6edf3handleImportContactTb4b4b4(Te6edf3actionTb4b4b4, Te6edf3myNodeNumTb4b4b4)
Tff7b72is Te6edf3ServiceActionTb4b4b4.Te6edf3SendContact Tff7b72-Tff7b72> Tb4b4b4{
Tff7b72val Te6edf3accepted Tff7b72=
Te6edf3runCatching Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminAwaitTb4b4b4(Te6edf3myNodeNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3add_contact Tff7b72= Te6edf3actionTb4b4b4.Te6edf3contactTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4.Te6edf3getOrDefaultTb4b4b4(Tff7b72falseTb4b4b4)
Te6edf3actionTb4b4b4.Te6edf3resultTb4b4b4.Te6edf3completeTb4b4b4(Te6edf3acceptedTb4b4b4)
Tb4b4b4}
Tff7b72is Te6edf3ServiceActionTb4b4b4.Te6edf3GetDeviceMetadata Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3actionTb4b4b4.Te6edf3destNumTb4b4b4, Te6edf3wantResponse Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3get_device_metadata_request Tff7b72= Tff7b72trueTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffhandleFavoriteTb4b4b4(Te6edf3actionTb4b4b4: Te6edf3ServiceActionTb4b4b4.Te6edf3FavoriteTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3node Tff7b72= Te6edf3actionTb4b4b4.Te6edf3node
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3myNodeNumTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3isFavoriteTb4b4b4) Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3remove_favorite_node Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3set_favorite_node Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Te6edf3nodeManagerTb4b4b4.Te6edf3updateNodeTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4) Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3isFavorite Tff7b72= Tff7b72!Te6edf3nodeTb4b4b4.Te6edf3isFavoriteTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffhandleIgnoreTb4b4b4(Te6edf3actionTb4b4b4: Te6edf3ServiceActionTb4b4b4.Te6edf3IgnoreTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3node Tff7b72= Te6edf3actionTb4b4b4.Te6edf3node
Tff7b72val Te6edf3newIgnoredStatus Tff7b72= Tff7b72!Te6edf3nodeTb4b4b4.Te6edf3isIgnored
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3myNodeNumTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3newIgnoredStatusTb4b4b4) Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3set_ignored_node Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3remove_ignored_node Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Te6edf3nodeManagerTb4b4b4.Te6edf3updateNodeTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4) Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3isIgnored Tff7b72= Te6edf3newIgnoredStatusTb4b4b4) Tb4b4b4}
Te6edf3scopeTb4b4b4.Te6edf3handledLaunch Tb4b4b4{ Te6edf3packetRepositoryTb4b4b4.Te6edf3valueTb4b4b4.Te6edf3updateFilteredBySenderTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3userTb4b4b4.Te6edf3idTb4b4b4, Te6edf3newIgnoredStatusTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffhandleMuteTb4b4b4(Te6edf3actionTb4b4b4: Te6edf3ServiceActionTb4b4b4.Te6edf3MuteTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3node Tff7b72= Te6edf3actionTb4b4b4.Te6edf3node
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3myNodeNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3toggle_muted_node Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4) Tb4b4b4}
Te6edf3nodeManagerTb4b4b4.Te6edf3updateNodeTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4) Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3isMuted Tff7b72= Tff7b72!Te6edf3nodeTb4b4b4.Te6edf3isMutedTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffhandleReactionTb4b4b4(Te6edf3actionTb4b4b4: Te6edf3ServiceActionTb4b4b4.Te6edf3ReactionTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3channel Tff7b72= Te6edf3actionTb4b4b4.Te6edf3contactKeyTff7b72[T79c0ff0Tff7b72]Tb4b4b4.Te6edf3digitToIntTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3destId Tff7b72= Te6edf3actionTb4b4b4.Te6edf3contactKeyTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff1Tb4b4b4)
Tff7b72val Te6edf3dataPacket Tff7b72=
Te6edf3DataPacketTb4b4b4(
Te6edf3to Tff7b72= Te6edf3destIdTb4b4b4,
Te6edf3dataType Tff7b72= Te6edf3PortNumTb4b4b4.Te6edf3TEXT_MESSAGE_APPTb4b4b4.Te6edf3valueTb4b4b4,
Te6edf3bytes Tff7b72= Te6edf3actionTb4b4b4.Te6edf3emojiTb4b4b4.Te6edf3encodeToByteArrayTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3channel Tff7b72= Te6edf3channelTb4b4b4,
Te6edf3replyId Tff7b72= Te6edf3actionTb4b4b4.Te6edf3replyIdTb4b4b4,
Te6edf3wantAck Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3emoji Tff7b72= Te6edf3EMOJI_INDICATORTb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3apply Tb4b4b4{ Te6edf3from Tff7b72= Te6edf3nodeManagerTb4b4b4.Te6edf3getMyIdTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3takeIf Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4) Tb4b4b4} Tff7b72?: Te6edf3DataPacketTb4b4b4.Te6edf3ID_LOCAL Tb4b4b4}
Te6edf3commandSenderTb4b4b4.Te6edf3sendDataTb4b4b4(Te6edf3dataPacketTb4b4b4)
Te6edf3rememberReactionTb4b4b4(Te6edf3actionTb4b4b4, Te6edf3dataPacketTb4b4b4.Te6edf3idTb4b4b4, Te6edf3myNodeNumTb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffhandleImportContactTb4b4b4(Te6edf3actionTb4b4b4: Te6edf3ServiceActionTb4b4b4.Te6edf3ImportContactTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3verifiedContact Tff7b72= Te6edf3actionTb4b4b4.Te6edf3contactTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3manually_verified Tff7b72= Tff7b72trueTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3myNodeNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3add_contact Tff7b72= Te6edf3verifiedContactTb4b4b4) Tb4b4b4}
Te6edf3nodeManagerTb4b4b4.Te6edf3handleReceivedUserTb4b4b4(
Te6edf3verifiedContactTb4b4b4.Te6edf3node_numTb4b4b4,
Te6edf3verifiedContactTb4b4b4.Te6edf3user Tff7b72?: Te6edf3UserTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3manuallyVerified Tff7b72= Tff7b72trueTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffrememberReactionTb4b4b4(Te6edf3actionTb4b4b4: Te6edf3ServiceActionTb4b4b4.Te6edf3ReactionTb4b4b4, Te6edf3packetIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3scopeTb4b4b4.Te6edf3handledLaunch Tb4b4b4{
Tff7b72val Te6edf3user Tff7b72= Te6edf3nodeManagerTb4b4b4.Te6edf3nodeDBbyNodeNumTff7b72[Te6edf3myNodeNumTff7b72]Tff7b72?.Te6edf3user Tff7b72?: Te6edf3UserTb4b4b4(Te6edf3id Tff7b72= Te6edf3nodeManagerTb4b4b4.Te6edf3getMyIdTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3reaction Tff7b72=
Te6edf3ReactionTb4b4b4(
Te6edf3replyId Tff7b72= Te6edf3actionTb4b4b4.Te6edf3replyIdTb4b4b4,
Te6edf3user Tff7b72= Te6edf3userTb4b4b4,
Te6edf3emoji Tff7b72= Te6edf3actionTb4b4b4.Te6edf3emojiTb4b4b4,
Te6edf3timestamp Tff7b72= Te6edf3nowMillisTb4b4b4,
Te6edf3snr Tff7b72= T79c0ff0fTb4b4b4,
Te6edf3rssi Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3hopsAway Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3packetId Tff7b72= Te6edf3packetIdTb4b4b4,
Te6edf3status Tff7b72= Te6edf3MessageStatusTb4b4b4.Te6edf3QUEUEDTb4b4b4,
Te6edf3to Tff7b72= Te6edf3actionTb4b4b4.Te6edf3contactKeyTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4,
Te6edf3channel Tff7b72= Te6edf3actionTb4b4b4.Te6edf3contactKeyTff7b72[T79c0ff0Tff7b72]Tb4b4b4.Te6edf3digitToIntTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3packetRepositoryTb4b4b4.Te6edf3valueTb4b4b4.Te6edf3insertReactionTb4b4b4(Te6edf3reactionTb4b4b4, Te6edf3myNodeNumTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSetOwnerTb4b4b4(Te6edf3uTb4b4b4: Te6edf3MeshUserTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3LoggerTb4b4b4.Te6edf3d Tb4b4b4{ Ta5d6ff"Ta5d6ffSetting owner: longName=Tffd700${Te6edf3uTb4b4b4.Te6edf3longNameTffd700}Ta5d6ff, shortName=Tffd700${Te6edf3uTb4b4b4.Te6edf3shortNameTffd700}Ta5d6ff" Tb4b4b4}
Tff7b72val Te6edf3newUser Tff7b72= Te6edf3UserTb4b4b4(Te6edf3id Tff7b72= Te6edf3uTb4b4b4.Te6edf3idTb4b4b4, Te6edf3long_name Tff7b72= Te6edf3uTb4b4b4.Te6edf3longNameTb4b4b4, Te6edf3short_name Tff7b72= Te6edf3uTb4b4b4.Te6edf3shortNameTb4b4b4, Te6edf3is_licensed Tff7b72= Te6edf3uTb4b4b4.Te6edf3isLicensedTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3myNodeNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3set_owner Tff7b72= Te6edf3newUserTb4b4b4) Tb4b4b4}
Te6edf3nodeManagerTb4b4b4.Te6edf3handleReceivedUserTb4b4b4(Te6edf3myNodeNumTb4b4b4, Te6edf3newUserTb4b4b4)
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSendTb4b4b4(Te6edf3pTb4b4b4: Te6edf3DataPacketTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendDataTb4b4b4(Te6edf3pTb4b4b4)
Te6edf3serviceBroadcastsTb4b4b4.Te6edf3broadcastMessageStatusTb4b4b4(Te6edf3pTb4b4b4.Te6edf3idTb4b4b4, Te6edf3pTb4b4b4.Te6edf3status Tff7b72?: Te6edf3MessageStatusTb4b4b4.Te6edf3UNKNOWNTb4b4b4)
Te6edf3dataHandlerTb4b4b4.Te6edf3valueTb4b4b4.Te6edf3rememberDataPacketTb4b4b4(Te6edf3pTb4b4b4, Te6edf3myNodeNumTb4b4b4, Tff7b72falseTb4b4b4)
Tff7b72val Te6edf3bytes Tff7b72= Te6edf3pTb4b4b4.Te6edf3bytes Tff7b72?: Te6edf3ByteStringTb4b4b4.Te6edf3EMPTY
Te6edf3analyticsTb4b4b4.Te6edf3trackTb4b4b4(Ta5d6ff"Ta5d6ffdata_sendTa5d6ff"Tb4b4b4, Te6edf3DataPairTb4b4b4(Ta5d6ff"Ta5d6ffnum_bytesTa5d6ff"Tb4b4b4, Te6edf3bytesTb4b4b4.Te6edf3sizeTb4b4b4)Tb4b4b4, Te6edf3DataPairTb4b4b4(Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4, Te6edf3pTb4b4b4.Te6edf3dataTypeTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRequestPositionTb4b4b4(Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3positionTb4b4b4: Te6edf3PositionTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3destNum Tff7b72!Tff7b72= Te6edf3myNodeNumTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3provideLocation Tff7b72= Te6edf3meshPrefsTb4b4b4.Te6edf3shouldProvideNodeLocationTb4b4b4(Te6edf3myNodeNumTb4b4b4)Tb4b4b4.Te6edf3value
Tff7b72val Te6edf3currentPosition Tff7b72=
Tff7b72when Tb4b4b4{
Te6edf3provideLocation Tff7b72&Tff7b72& Te6edf3positionTb4b4b4.Te6edf3isValidTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Te6edf3position
Te6edf3provideLocation Tff7b72-Tff7b72>
Te6edf3nodeManagerTb4b4b4.Te6edf3nodeDBbyNodeNumTff7b72[Te6edf3myNodeNumTff7b72]Tff7b72?.Te6edf3positionTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3PositionTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4}Tff7b72?.Te6edf3takeIf Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3isValidTb4b4b4(Tb4b4b4) Tb4b4b4}
Tff7b72?: Te6edf3PositionTb4b4b4(T79c0ff0.0Tb4b4b4, T79c0ff0.0Tb4b4b4, T79c0ff0Tb4b4b4)
Tff7b72else Tff7b72-Tff7b72> Te6edf3PositionTb4b4b4(T79c0ff0.0Tb4b4b4, T79c0ff0.0Tb4b4b4, T79c0ff0Tb4b4b4)
Tb4b4b4}
Te6edf3commandSenderTb4b4b4.Te6edf3requestPositionTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3currentPositionTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRemoveByNodenumTb4b4b4(Te6edf3nodeNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3requestIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3nodeManagerTb4b4b4.Te6edf3removeByNodenumTb4b4b4(Te6edf3nodeNumTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3myNodeNumTb4b4b4, Te6edf3requestIdTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3remove_by_nodenum Tff7b72= Te6edf3nodeNumTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSetRemoteOwnerTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3payloadTb4b4b4: Te6edf3ByteArrayTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3u Tff7b72= Te6edf3UserTb4b4b4.Te6edf3ADAPTERTb4b4b4.Te6edf3decodeTb4b4b4(Te6edf3payloadTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3set_owner Tff7b72= Te6edf3uTb4b4b4) Tb4b4b4}
Te6edf3nodeManagerTb4b4b4.Te6edf3handleReceivedUserTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3uTb4b4b4)
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleGetRemoteOwnerTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4, Te6edf3wantResponse Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3get_owner_request Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSetConfigTb4b4b4(Te6edf3payloadTb4b4b4: Te6edf3ByteArrayTb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3c Tff7b72= Te6edf3ConfigTb4b4b4.Te6edf3ADAPTERTb4b4b4.Te6edf3decodeTb4b4b4(Te6edf3payloadTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3myNodeNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3set_config Tff7b72= Te6edf3cTb4b4b4) Tb4b4b4}
T8b949e// Optimistically persist the config locally so CommandSender picks up
T8b949e// the new values (e.g. hop_limit) immediately instead of waiting for
T8b949e// the next want_config handshake.
Te6edf3scopeTb4b4b4.Te6edf3handledLaunch Tb4b4b4{ Te6edf3radioConfigRepositoryTb4b4b4.Te6edf3setLocalConfigTb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSetRemoteConfigTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3payloadTb4b4b4: Te6edf3ByteArrayTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3c Tff7b72= Te6edf3ConfigTb4b4b4.Te6edf3ADAPTERTb4b4b4.Te6edf3decodeTb4b4b4(Te6edf3payloadTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3set_config Tff7b72= Te6edf3cTb4b4b4) Tb4b4b4}
T8b949e// When targeting the local node, optimistically persist the config so the
T8b949e// UI reflects changes immediately (matching handleSetConfig behaviour).
Tff7b72if Tb4b4b4(Te6edf3destNum Tff7b72=Tff7b72= Te6edf3nodeManagerTb4b4b4.Te6edf3myNodeNumTb4b4b4.Te6edf3valueTb4b4b4) Tb4b4b4{
Te6edf3scopeTb4b4b4.Te6edf3handledLaunch Tb4b4b4{ Te6edf3radioConfigRepositoryTb4b4b4.Te6edf3setLocalConfigTb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleGetRemoteConfigTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3configTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4, Te6edf3wantResponse Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3config Tff7b72=Tff7b72= Te6edf3AdminMessageTb4b4b4.Te6edf3ConfigTypeTb4b4b4.Te6edf3SESSIONKEY_CONFIGTb4b4b4.Te6edf3valueTb4b4b4) Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3get_device_metadata_request Tff7b72= Tff7b72trueTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3get_config_request Tff7b72= Te6edf3AdminMessageTb4b4b4.Te6edf3ConfigTypeTb4b4b4.Te6edf3fromValueTb4b4b4(Te6edf3configTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSetModuleConfigTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3payloadTb4b4b4: Te6edf3ByteArrayTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3c Tff7b72= Te6edf3ModuleConfigTb4b4b4.Te6edf3ADAPTERTb4b4b4.Te6edf3decodeTb4b4b4(Te6edf3payloadTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3set_module_config Tff7b72= Te6edf3cTb4b4b4) Tb4b4b4}
Te6edf3cTb4b4b4.Te6edf3statusmessageTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3sm Tff7b72-Tff7b72> Te6edf3nodeManagerTb4b4b4.Te6edf3updateNodeStatusTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3smTb4b4b4.Te6edf3node_statusTb4b4b4) Tb4b4b4}
T8b949e// Optimistically persist module config locally so the UI reflects the
T8b949e// new values immediately instead of waiting for the next want_config handshake.
Tff7b72if Tb4b4b4(Te6edf3destNum Tff7b72=Tff7b72= Te6edf3nodeManagerTb4b4b4.Te6edf3myNodeNumTb4b4b4.Te6edf3valueTb4b4b4) Tb4b4b4{
Te6edf3scopeTb4b4b4.Te6edf3handledLaunch Tb4b4b4{ Te6edf3radioConfigRepositoryTb4b4b4.Te6edf3setLocalModuleConfigTb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleGetModuleConfigTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3configTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4, Te6edf3wantResponse Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3get_module_config_request Tff7b72= Te6edf3AdminMessageTb4b4b4.Te6edf3ModuleConfigTypeTb4b4b4.Te6edf3fromValueTb4b4b4(Te6edf3configTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSetRingtoneTb4b4b4(Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3ringtoneTb4b4b4: Tffa657StringTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3set_ringtone_message Tff7b72= Te6edf3ringtoneTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleGetRingtoneTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4, Te6edf3wantResponse Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3get_ringtone_request Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSetCannedMessagesTb4b4b4(Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3messagesTb4b4b4: Tffa657StringTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3set_canned_message_module_messages Tff7b72= Te6edf3messagesTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleGetCannedMessagesTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4, Te6edf3wantResponse Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3get_canned_message_module_messages_request Tff7b72= Tff7b72trueTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSetChannelTb4b4b4(Te6edf3payloadTb4b4b4: Te6edf3ByteArray?Tb4b4b4, Te6edf3myNodeNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3payload Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3c Tff7b72= Te6edf3ChannelTb4b4b4.Te6edf3ADAPTERTb4b4b4.Te6edf3decodeTb4b4b4(Te6edf3payloadTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3myNodeNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3set_channel Tff7b72= Te6edf3cTb4b4b4) Tb4b4b4}
T8b949e// Optimistically persist the channel settings locally so the UI
T8b949e// reflects changes immediately instead of waiting for the next
T8b949e// want_config handshake.
Te6edf3scopeTb4b4b4.Te6edf3handledLaunch Tb4b4b4{ Te6edf3radioConfigRepositoryTb4b4b4.Te6edf3updateChannelSettingsTb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleSetRemoteChannelTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3payloadTb4b4b4: Te6edf3ByteArray?Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3payload Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3c Tff7b72= Te6edf3ChannelTb4b4b4.Te6edf3ADAPTERTb4b4b4.Te6edf3decodeTb4b4b4(Te6edf3payloadTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3set_channel Tff7b72= Te6edf3cTb4b4b4) Tb4b4b4}
T8b949e// When targeting the local node, optimistically persist the channel so
T8b949e// the UI reflects changes immediately (matching handleSetChannel behaviour).
Tff7b72if Tb4b4b4(Te6edf3destNum Tff7b72=Tff7b72= Te6edf3nodeManagerTb4b4b4.Te6edf3myNodeNumTb4b4b4.Te6edf3valueTb4b4b4) Tb4b4b4{
Te6edf3scopeTb4b4b4.Te6edf3handledLaunch Tb4b4b4{ Te6edf3radioConfigRepositoryTb4b4b4.Te6edf3updateChannelSettingsTb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleGetRemoteChannelTb4b4b4(Te6edf3idTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3indexTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3idTb4b4b4, Te6edf3wantResponse Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3get_channel_request Tff7b72= Te6edf3index Tff7b72+ T79c0ff1Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRequestNeighborInfoTb4b4b4(Te6edf3requestIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3requestNeighborInfoTb4b4b4(Te6edf3requestIdTb4b4b4, Te6edf3destNumTb4b4b4)
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleBeginEditSettingsTb4b4b4(Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3begin_edit_settings Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleCommitEditSettingsTb4b4b4(Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3commit_edit_settings Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRebootToDfuTb4b4b4(Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3enter_dfu_mode_request Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRequestTelemetryTb4b4b4(Te6edf3requestIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3typeTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3requestTelemetryTb4b4b4(Te6edf3requestIdTb4b4b4, Te6edf3destNumTb4b4b4, Te6edf3typeTb4b4b4)
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRequestShutdownTb4b4b4(Te6edf3requestIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3requestIdTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3shutdown_seconds Tff7b72= Te6edf3DEFAULT_REBOOT_DELAYTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRequestRebootTb4b4b4(Te6edf3requestIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3LoggerTb4b4b4.Te6edf3i Tb4b4b4{ Ta5d6ff"Ta5d6ffReboot requested for node Tffd700$Te6edf3destNumTa5d6ff" Tb4b4b4}
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3requestIdTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3reboot_seconds Tff7b72= Te6edf3DEFAULT_REBOOT_DELAYTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRequestRebootOtaTb4b4b4(Te6edf3requestIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3modeTb4b4b4: Tffa657IntTb4b4b4, Te6edf3hashTb4b4b4: Te6edf3ByteArray?Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3otaMode Tff7b72= Te6edf3OTAModeTb4b4b4.Te6edf3fromValueTb4b4b4(Te6edf3modeTb4b4b4) Tff7b72?: Te6edf3OTAModeTb4b4b4.Te6edf3NO_REBOOT_OTA
Tff7b72val Te6edf3otaEvent Tff7b72=
Te6edf3AdminMessageTb4b4b4.Te6edf3OTAEventTb4b4b4(Te6edf3reboot_ota_mode Tff7b72= Te6edf3otaModeTb4b4b4, Te6edf3ota_hash Tff7b72= Te6edf3hashTff7b72?.Te6edf3toByteStringTb4b4b4(Tb4b4b4) Tff7b72?: Te6edf3ByteStringTb4b4b4.Te6edf3EMPTYTb4b4b4)
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3requestIdTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3ota_request Tff7b72= Te6edf3otaEventTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRequestFactoryResetTb4b4b4(Te6edf3requestIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3LoggerTb4b4b4.Te6edf3i Tb4b4b4{ Ta5d6ff"Ta5d6ffFactory reset requested for node Tffd700$Te6edf3destNumTa5d6ff" Tb4b4b4}
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3requestIdTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3factory_reset_device Tff7b72= T79c0ff1Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleRequestNodedbResetTb4b4b4(Te6edf3requestIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3preserveFavoritesTb4b4b4: Tffa657BooleanTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3requestIdTb4b4b4) Tb4b4b4{ Te6edf3AdminMessageTb4b4b4(Te6edf3nodedb_reset Tff7b72= Te6edf3preserveFavoritesTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleGetDeviceConnectionStatusTb4b4b4(Te6edf3requestIdTb4b4b4: Tffa657IntTb4b4b4, Te6edf3destNumTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3commandSenderTb4b4b4.Te6edf3sendAdminTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3requestIdTb4b4b4, Te6edf3wantResponse Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{
Te6edf3AdminMessageTb4b4b4(Te6edf3get_device_connection_status_request Tff7b72= Tff7b72trueTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffhandleUpdateLastAddressTb4b4b4(Te6edf3deviceAddrTb4b4b4: Tffa657String?Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3currentAddr Tff7b72= Te6edf3meshPrefsTb4b4b4.Te6edf3deviceAddressTb4b4b4.Te6edf3value
Tff7b72if Tb4b4b4(Te6edf3deviceAddr Tff7b72!Tff7b72= Te6edf3currentAddrTb4b4b4) Tb4b4b4{
Te6edf3LoggerTb4b4b4.Te6edf3i Tb4b4b4{ Ta5d6ff"Ta5d6ffDevice address changed, switching database and clearing node DBTa5d6ff" Tb4b4b4}
Te6edf3meshPrefsTb4b4b4.Te6edf3setDeviceAddressTb4b4b4(Te6edf3deviceAddrTb4b4b4)
Te6edf3scopeTb4b4b4.Te6edf3handledLaunch Tb4b4b4{
Te6edf3nodeManagerTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)
Te6edf3messageProcessorTb4b4b4.Te6edf3valueTb4b4b4.Te6edf3clearEarlyPacketsTb4b4b4(Tb4b4b4)
Te6edf3databaseManagerTb4b4b4.Te6edf3switchActiveDatabaseTb4b4b4(Te6edf3deviceAddrTb4b4b4)
Te6edf3notificationManagerTb4b4b4.Te6edf3cancelAllTb4b4b4(Tb4b4b4)
Te6edf3nodeManagerTb4b4b4.Te6edf3loadCachedNodeDBTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.12s